/**
 * 订单状态管理工具
 * 统一处理零食订单和代取订单的状态显示
 * 
 * @version 2.0
 * @date 2025-10-11
 */

// 订单状态配置
const ORDER_STATUS_CONFIG = {
  // 零食订单 (orderType = 1)
  1: {
    0: { text: '待支付', desc: '请在15分钟内完成支付，超时将自动取消', icon: '💳', color: '#ff6b6b' },
    1: { text: '待接单', desc: '等待商家接单', icon: '⏳', color: '#ffa500' },
    3: { text: '配送中', desc: '商家正在配送中', icon: '🚚', color: '#4dabf7' },
    6: { text: '已完成', desc: '订单已完成', icon: '✅', color: '#51cf66' },
    5: { text: '已取消', desc: '订单已取消（兼容旧状态）', icon: '❌', color: '#adb5bd' },
    7: { text: '已取消', desc: '订单已取消', icon: '❌', color: '#adb5bd' },
    8: { text: '已退款', desc: '订单已退款', icon: '💰', color: '#f44336' },
    9: { text: '退款审核中', desc: '商家正在审核退款申请', icon: '⏰', color: '#9c27b0' }
  },
  // 代取订单 (orderType = 2, 3, 4)
  2: {
    0: { text: '待支付', desc: '请在15分钟内完成支付，超时将自动取消', icon: '💳', color: '#ff6b6b' },
    1: { text: '待接单', desc: '等待接单中', icon: '⏳', color: '#ffa500' },
    2: { text: '待取件', desc: '已接单，准备取件', icon: '📦', color: '#4dabf7' },
    3: { text: '配送中', desc: '正在配送途中', icon: '🚚', color: '#4dabf7' },
    4: { text: '已送达', desc: '已送达，等待确认', icon: '✅', color: '#51cf66' },
    5: { text: '待结算', desc: '等待平台结算', icon: '💰', color: '#ffa500' },
    6: { text: '已完成', desc: '订单已完成', icon: '🎉', color: '#51cf66' },
    7: { text: '已取消', desc: '订单已取消', icon: '❌', color: '#adb5bd' },
    8: { text: '已退款', desc: '订单已退款', icon: '💸', color: '#f44336' },
    9: { text: '退款审核中', desc: '商家正在审核退款申请', icon: '⏰', color: '#9c27b0' }
  }
}

// 代取订单类型共用同一套配置
ORDER_STATUS_CONFIG[3] = ORDER_STATUS_CONFIG[2]
ORDER_STATUS_CONFIG[4] = ORDER_STATUS_CONFIG[2]
ORDER_STATUS_CONFIG[5] = ORDER_STATUS_CONFIG[2]

/**
 * 获取订单状态显示信息
 * @param {Number} orderType 订单类型 (1-零食，2-快递，3-外卖，4-奶咖)
 * @param {Number} status 订单状态
 * @returns {Object} 状态显示信息 { text, desc, icon, color }
 */
export function getOrderStatusDisplay(orderType, status) {
  const config = ORDER_STATUS_CONFIG[orderType] || ORDER_STATUS_CONFIG[1]
  return config[status] || { text: '未知', desc: '', icon: '❓', color: '#999' }
}

/**
 * 获取订单状态文本
 * @param {Number} orderType 订单类型
 * @param {Number} status 订单状态
 * @returns {String} 状态文本
 */
export function getStatusText(orderType, status) {
  return getOrderStatusDisplay(orderType, status).text
}

/**
 * 获取订单状态图标
 * @param {Number} orderType 订单类型
 * @param {Number} status 订单状态
 * @returns {String} 状态图标
 */
export function getStatusIcon(orderType, status) {
  return getOrderStatusDisplay(orderType, status).icon
}

/**
 * 获取订单状态颜色
 * @param {Number} orderType 订单类型
 * @param {Number} status 订单状态
 * @returns {String} 状态颜色
 */
export function getStatusColor(orderType, status) {
  return getOrderStatusDisplay(orderType, status).color
}

/**
 * 获取订单状态渐变背景
 * @param {Number} orderType 订单类型
 * @param {Number} status 订单状态
 * @returns {String} CSS渐变背景
 */
export function getStatusGradient(orderType, status) {
  const gradients = {
    0: 'linear-gradient(135deg, #ff6b6b 0%, #ff8787 100%)', // 待支付 - 红色
    1: 'linear-gradient(135deg, #ffa500 0%, #ffb732 100%)', // 待接单 - 橙色
    2: 'linear-gradient(135deg, #4dabf7 0%, #66c1ff 100%)', // 已接单/待取件 - 蓝色
    3: 'linear-gradient(135deg, #4dabf7 0%, #66c1ff 100%)', // 配送中 - 蓝色
    4: 'linear-gradient(135deg, #51cf66 0%, #72e087 100%)', // 已送达 - 绿色
    5: orderType === 1 
      ? 'linear-gradient(135deg, #adb5bd 0%, #ced4da 100%)' // 零食订单旧取消状态
      : 'linear-gradient(135deg, #ffa500 0%, #ffb732 100%)', // 代取订单：待结算 - 橙色
    6: 'linear-gradient(135deg, #51cf66 0%, #72e087 100%)', // 已完成 - 绿色
    7: 'linear-gradient(135deg, #adb5bd 0%, #ced4da 100%)', // 已取消 - 灰色
    8: 'linear-gradient(135deg, #f44336 0%, #d32f2f 100%)'  // 已退款 - 深红色
  }
  return gradients[status] || 'linear-gradient(135deg, #adb5bd 0%, #ced4da 100%)'
}

/**
 * 获取订单类型文本
 * @param {Number} orderType 订单类型
 * @returns {String} 订单类型文本
 */
export function getOrderTypeText(orderType) {
  const types = { 
    1: '零食购买', 
    2: '取快递', 
    3: '取外卖', 
    4: '代取奶咖',
    5: '其他服务' 
  }
  return types[orderType] || '未知类型'
}

export default {
  getOrderStatusDisplay,
  getStatusText,
  getStatusIcon,
  getStatusColor,
  getStatusGradient,
  getOrderTypeText
}

